GENERIC
   type objet is private;
   with function "<=" (A,B : objet) return BOOLEAN;
PACKAGE taso IS

   type tas is private; -- Pas sur de moi ici

   function Creer return tas;
   function Mettre(T : tas; x : objet) return tas;
   function Retirer(T : tas; x : objet) return tas;
   function Dans(T : tas; x: objet) return BOOLEAN;
   function Taille(T : tas) return NATURAL;
   function Ieme(T : tas; i : NATURAL) return objet;


private
   type builder is (Creer, Mettre);
   type term (selon : builder) is record
      case selon IS
      	when Creer => null;
     	when Mettre => changed : tas ;  change : objet;
      end case;
   end record;
   type tas is access term;

   END taso;
